<?php
/**
 * Created by PhpStorm. User: ADun, Date: 14/12/23 下午1:30
 * Description: 信息中心，负责微信信息的解析与收发
 */
include_once 'linhe.php';
include_once 'Base.php';
class C信息中心 extends Base {
    /**
     * @var bool|C用户
     */
    public $vc用户;
    /**
     * @var C微信
     */
    public $vc公众号;
    /** @var C聊天 */
    public $vo会话;

    /** @var C微直达
    */
    public $vc微直达;

    // TODO 通道需要优化，不止微信一个
    public $vs通道=Constants::t通道_微信;
    public $vs用户OpenId;
    public $vs公众号OpenId;
    public $vs公众号Id;
    public $vs公众号AppId;
    public $vs公众号AppToken;
    public $vs公众号AppSecret;
    public $vo当前消息;
    private static $vo静态实例;

    /**
     * 构造函数，根据当前消息构建当前用户和当前公众号
     * @param $vs用户OpenId
     * @param $vs公众号openId
     * @param int $vs通道
     * @internal param DoMessage $vo微信消息
     */
    protected  function __construct($vs用户OpenId,$vs公众号openId,$vs通道=Constants::t通道_微信)
    {
        parent::__construct();
        //$this->vo当前消息=$vo微信消息;

        $this->vs用户OpenId = $vs用户OpenId;
        $do公众号 = new DoPublic_serv_accounts();
        $do公众号->loadById(G_SERV_ID);

        $this->vs公众号Id = $do公众号->get_id();
        $this->vs公众号AppId = $do公众号->get_app_id();
        $this->vs公众号AppToken = $do公众号->get_token();
        $this->vs公众号AppSecret = $do公众号->get_AppSecret();
        $this->vs公众号OpenId = $do公众号->get_公众号openID();

        $this->vs通道=$vs通道;
        logger()->logInfo(__LINE__.' APPID '.$this->vs公众号Id.'  '.$do公众号->get_name().$this->vs公众号OpenId.$this->vs公众号AppToken.$this->vs公众号AppSecret);

        logger()->logInfo(__LINE__.'_Function Called by:'.$this->vs通道);

        //构建微信接口对象
        $this->vc公众号 = wzd()->init微信接口($this->vs用户OpenId,$this->vs公众号OpenId,$this);
        wzd()->init微直达($this);

        $this->vc微直达 = wzd()->vc微直达;
        $vb用户已存在 = wzd()->f用户_是否注册($this->vs用户OpenId);

        if($vb用户已存在){
            $this->vc用户 = C用户::init($this);
            pdo()->update('用户',array('最后登录时间'=>Date('Y-m-d H:i:s')),array('openID'=>$this->vs用户OpenId));
        }else{
            //TODO 未注册用户的处理逻辑需要完善
            logger()->logInfo('未找到用户！新用户未注册。'.$this->vs用户OpenId);
            $this->vc用户 = new C用户($this);
        }
        wzd()->vc信息中心=$this;
        self::$vo静态实例=$this;

    }

    public static function getmation实例($vs用户openID,$vs公众号openID) {
        return new C信息中心($vs用户openID,$vs公众号openID);
    }

    public static function get实列根据用户Oid($openID) {
        pdo()->update('用户',array('最后登录时间'=>Date('Y-m-d H:i:s')),array('openID'=>$openID));
        if (!empty(self::$vo静态实例)) {
            return self::$vo静态实例;
        } else {
            self::$vo静态实例 = new C信息中心($openID, '', Constants::t通道_微信);
            return self::$vo静态实例;
        }
    }

    public static function get实列根据公众号OpenId($vs公众号OpenId = '') {
        if (!empty(self::$vo静态实例)) {
            return self::$vo静态实例;
        } else {
            $vsUser=G_DEFAULT_USER_OPENID; ///暂时添加
            self::$vo静态实例 = new C信息中心($vsUser, '', Constants::t通道_微信);
            return self::$vo静态实例;
        }
    }

    public function fc查找所有店长(){
        $do  =  new Do用户();
        return pdo()->selectBOs($do,array('认证'=>'2','公众号ID'=>G_SERV_ID));

    }


    public static function get实列($vsUser=G_DEFAULT_USER_OPENID,$vs通道=Constants::t通道_微信)
    {

        if (!empty(self::$vo静态实例))
            return self::$vo静态实例;
        else {
            logger()->logInfo('未生成信息中心！严重错误！！');

            return false;
        }
    }
    /**
     * @param $s微信文本
     * @return DoMessage
     */
    public static function f解析微信消息文本($s微信文本){
        return C微信::f解析消息文本($s微信文本);
    }


    /**
     * @param $signature
     * @param $timestamp
     * @param $nonce
     * @return bool
     */
    public static function f验证签名($signature, $timestamp, $nonce,$appid){
        return C微信::f验证签名($signature, $timestamp, $nonce,$appid);
    }

    /**
     * @param DoMessage $vo当前消息
     * @return string
     */
    public static function f处理微信消息(DoMessage $vo当前消息){
        logger()->logDebug2("f处理微信消息");
        logger()->logDebug2($vo当前消息);
        if(empty(self::$vo静态实例)) {
            self::$vo静态实例 = new C信息中心($vo当前消息->get_from_user_name(), $vo当前消息->get_to_user_name(), Constants::t通道_微信);
            logger()->logInfo('创建新的vo静态实例：');
        }else
        {
            logger()->logInfo('使用已有vo静态实例打印：');
        }
        $vo实列 = self::$vo静态实例;
//        self::$vo静态实例->vo当前消息=$vo当前消息;
        //$vs回复='';
        $data=date('Y-m-d H:i:s',$vo当前消息->get_create_time());
        logger()->logInfo('vo静态实例打印：'.self::$vo静态实例->vc用户);
        $do= new DoLog接收信息();
        $do->set_ToUserName($vo当前消息->get_to_user_name());
        $do->set_FromUserName($vo当前消息->get_from_user_name());
        $do->set_CreateTime($data);
        $do->set_MsgType(@$vo当前消息->get_message_type());
        $do->set_Event(@$vo当前消息->get_event());
        $do->set_Content(@$vo当前消息->get_content());
        $do->set_MsgId(@$vo当前消息->get_id());
        $re=$do->insert();
        if($re)logger()->logInfo('成功将信息写入DoLog接收信息数据表');
        $vo当前用户=self::$vo静态实例->vc用户;

        $logStr1=$vo当前用户->vo用户数据->get_openID().$vo当前用户->vo用户数据->get_name();
        $vs事件ID=$vo当前消息->get_message_type()==Constants::x消息类型_事件 ? $vo当前消息->get_event_key():'';
        $logStr2=$vo当前消息->get_message_type().']['.$vo当前消息->get_content().$vs事件ID;

        logger()->logInfo("--#user:[$logStr1] #message:[$logStr2]");

        // 根据不同的消息类型，分别处理
        switch ($vo当前消息->get_message_type()) {


            case Constants::x消息类型_文本: // 当收到一个文本消息

            case Constants::x消息类型_图片: // 当收到一个图片

            case Constants::x消息类型_视频: // 当收到一个视频

            case Constants::x消息类型_语音: // 当收到一个语音
                $vs回复=$vo实列->f处理媒体消息($vo当前消息);
//               $vs回复 = $vo实列->fh生成文本消息('您好，目前系统暂不支持关键字搜索！');
                break;

            //TODO 地理位置信息处理需优化
            case Constants::x消息类型_位置: // 当收到一个地理位置信息
                $ret = $vo当前用户->f设置位置($vo当前消息->get_label(), $vo当前消息->get_location_x(), $vo当前消息->get_location_y());
                if ($ret)
                    $vs回复=$vo实列->fh生成文本消息("⭕您的位置已更新：" . $vo当前消息->get_label() . "\r\n纬度:" . $vo当前消息->get_location_x() . "\r\n经度" . $vo当前消息->get_location_y());
                else
                    $vs回复=$vo实列->fh生成文本消息("❌位置更新失败：" . $ret);
                break;

            case Constants::x消息类型_事件: // 收到事件响应
                $vs回复= $vo实列->f处理事件消息($vo当前消息);
                break;
            default:
                $vs回复= $vo实列->fh生成文本消息("📣您发了" . $vo当前消息->get_message_type());
                break;
        }

        //Linhe::DM()->KeepDialog();
        logger()->logDebug("==========exit onMessage=========");

        return $vs回复;
    }

    /**
     * @param DoMessage $vo当前消息
     * @return string
     */
    protected function f处理事件消息(DoMessage $vo当前消息){
        //$vs回复=$this->fh回复空消息();
        $evt=strtolower(trim($vo当前消息->get_event()));
        Logger::getInstance()->logDebug2("测试已关注扫码");
        Logger::getInstance()->logDebug2($evt);
        Logger::getInstance()->logDebug2("测试已关注扫码结束");

        switch ($evt) {
            case "subscribe": // 当用户关注

                $qrcode=$vo当前消息->get_event_key();
                logger()->logExctra($qrcode,'qrcode:');

                $code = self::$pdo->selectColumns('qrcode',array('code,business,公众号ID,公众号openID'),array('ticket'=>$vo当前消息->ticket));
                $vs回复=$this->vc用户->f关注($vo当前消息->get_to_user_name(), $code['code']);
                //if($qrcode) $vs回复=$vs回复.$this->fs扫码($qrcode);
                if($code['business']!=1 && $code['business'] != '') {
                    if($code['code']){
                        $vs回复1=$this->fs扫码($code['code']);
                    }else{
                        $vs回复1=$this->fh生成文本消息("无效二维码或者过期的二维码");
                    }
                }
                break;

            //todo 要在数据库里标注一下
            //如果有被直达
            //如果是商户
            case "unsubscribe": // 当用户取消关注
                $vs回复=$this->vc用户->f取消关注();
                break;
            case "click":
                $vs回复=$this->f处理菜单事件($vo当前消息);
                break;
            //带参数二维码
            case 'scan':
//                $vs回复=$this->fs扫码($vo当前消息->get_event_key());
                $code = self::$pdo->selectColumns('qrcode',array('code,公众号ID,公众号openID'),array('ticket'=>$vo当前消息->ticket));
                if($code['code']){
                    $vs回复=$this->fs扫码($code['code']);
                    if($vs回复=='发送商铺广告') {
                        $vs回复=$this->fh回复空消息();
                    }
                }else{
                    $vs回复=$this->fh生成文本消息("无效二维码或者过期的二维码");
                }
                break;
            case 'scancode_waitmsg':
                $url=trim($vo当前消息->get_scancodeinfo_scanresult());

                @ $code=C二维码::getQRcodeByUrl($url);

                if($code){
                    $vs回复=$this->fs扫码($code);
                }else{
                    $vs回复=$this->fh生成文本消息("无效二维码或者过期的二维码");
                }
                break;
//            case 'view':
//
//
//
//                $vs回复=$this->fh生成文本消息("事件Key:" . $vo当前消息->get_event_key().'&用户Oid='.$vo当前消息->get_from_user_name());
//                break;

            default:
                $vs回复=$this->fh生成文本消息("事件Key:" . $vo当前消息->get_event_key());
                break;
        }
        return $vs回复;

    }

    /**
     * @param DoMessage $msg
     * @return string
     */
    protected function f处理媒体消息(DoMessage $msg)
    {

        $vo当前消息=$msg;
        $vo回复消息 = clone $vo当前消息;
        // 回复消息的发送和接受者同接受到的消息的发送和接受者互换
        $tmp=$vo回复消息->get_from_user_name();
        $vo回复消息->set_from_user_name($vo回复消息->get_to_user_name());
        $vo回复消息->set_to_user_name($tmp);

        // 连接是否已存在
        $session =$this->vo会话;

        //return '您好，目前系统暂不支持关键字搜索！';
        switch ($vo当前消息->get_message_type()){
            case Constants::x消息类型_文本:
                $vo解析后消息=$vo当前消息;
                return $this->fc处理文本消息($vo解析后消息);
                break;
            case Constants::x消息类型_图片:
            case Constants::x消息类型_视频:
                $userOpenId=$this->vc用户->vsOpenId;
                if($session){
                    if ($userOpenId == $session->vo会话数据->get_person1())
                        $userOpenId=$session->vo会话数据->get_person2();
                    else
                        $userOpenId=$session->vo会话数据->get_person1();
                    return $this->fc处理文本消息($vo当前消息,true);

                }else{
                    return $this->fc处理文本消息($vo当前消息,true);
                   // return $this->fh回复消息($vo回复消息);
                }

                break;
            case Constants::x消息类型_语音:
                $vo解析后消息=$this->fy语音识别($vo当前消息);
                $userOpenId=$this->vc用户->vsOpenId;
                if($session){
                    if ($userOpenId == $session->vo会话数据->get_person1())
                        $userOpenId=$session->vo会话数据->get_person2();
                    else
                        $userOpenId=$session->vo会话数据->get_person1();

                  //  $this->ff发送文本消息_多公众号('自动语音识别结果：'.$vo解析后消息->get_content(),$this->vs用户OpenId,$this->vs公众号Id);
                    return $this->fc处理文本消息($vo回复消息,true);
                }else{

                  //  $this->ff发送文本消息_多公众号('自动语音识别结果：'.$vo解析后消息->get_content(),$this->vs用户OpenId,$this->vs公众号Id);

                    return $this->fc处理文本消息($vo当前消息,true);
                }

                break;

            default:
                return $this->fh生成文本消息('错误：非媒体类型消息');
                break;
        }

        //--------------------------------------------------------------------------------------------------------
    }

    protected function fc处理文本消息(DoMessage $vo消息,$vb语音识别=false){
        logger()->logDebug2("fc处理文本消息");
        $content = trim($vo消息->get_content());
        return $this->fh生成文本消息(Constants::autoRetrunText);
    }


    public function ft通过mediaId获取多媒体信息($mediaId,$vo当前用户){
        $Tools= new Tools();
        $Token= $Tools-> fh通过公众号id获取公众号Token信息($vo当前用户->vo用户数据->get_公众号ID());

        $url2 = "https://api.weixin.qq.com/cgi-bin/media/get?access_token=".$Token."&media_id=".$mediaId;


        $ret2 = $this->curl_get_page($url2);

        return $ret2;
    }

    public function curl_get_page($url){
        //初始化

        $ch = curl_init();

        //设置选项，包括url

        curl_setopt($ch, CURLOPT_URL, $url);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
        curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
        curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
        curl_setopt($ch,CURLOPT_AUTOREFERER,1);
        curl_setopt($ch, CURLOPT_HEADER, 0);

        //执行并获取html内容

        $output = curl_exec($ch);

        //释放curl句柄

        curl_close($ch);

        return $output ;
    }

    /**
     * @param DoMessage $voMessage
     * @return string
     */
    protected  function f处理菜单事件(DoMessage $voMessage){
        $session = $this->vo会话;
        //$vs回复=$this->fh回复空消息();

        switch ($voMessage->get_event_key()) {
            case "MENU_SHOPPING":
                // 对于事件型菜单项，此语句实际上不能触发
                $vs回复=$this->vc公众号->fh生成文本消息(''); // 发送图文信息

                break;

            case "MENU_HELP":
//                $vs回复=$this->vc公众号->fh生成文本消息(Constants::消息_帮助信息($this->vs公众号Id));
                $vs回复=$this->vc公众号->fh生成文本消息(C公众号::ff查找公众号帮助语($this->vs公众号Id));
                break;

            default:
                $vs回复=$this->vc公众号->fh生成文本消息("您点击了菜单：" . $voMessage->get_event_key());
                break;
        }

        return $vs回复;

    }

    public function fh回复新关注用户消息($id){
        $vo图文消息=C微直达::responseNewUser($this->vs公众号AppId,$this->vs公众号Id);
        return $this->fh回复图文消息($vo图文消息);
    }

    public function fs扫码($codeId)
    {
        $vs回复=$this->fh回复空消息();
        logger()->logExctra($codeId,"--enter into 信息中心:扫码--");

        if($codeId){

            $vs回复=$this->vc用户->fs扫二维码($codeId);
            return $vs回复;

        }
        return $vs回复;
    }

    /**
     * @param DoMessage $vo消息
     * @return DoMessage|null
     */
    protected function fy语音识别(DoMessage $vo消息){
        if($vo消息->get_message_type()!=Constants::x消息类型_语音) return null;
        $vo输出消息=clone $vo消息;
        $vo输出消息->set_message_type(Constants::x消息类型_文本);
        //此步骤在组装消息对象时已完成,语音识别由微信自动完成
        //$v当前消息->set_content( (string)$wxData->Recognition); //语音识别结果
        return $vo输出消息;
    }

    /**
     * @param DoMessage $vo消息
     * @return DoMessage|null
     */
    protected function ft图片识别(DoMessage $vo消息){
        if($vo消息->get_message_type()!=Constants::x消息类型_图片) return null;
        $vo输出消息=clone $vo消息;
        $vo输出消息->set_message_type(Constants::x消息类型_文本);
        //此步骤在组装消息对象时已完成,语音识别由微信自动完成
        //$v当前消息->set_content( (string)$wxData->Recognition); //语音识别结果
        return $vo输出消息;
    }
    /**
     * @param DoMessage $vo消息
     * @return DoMessage|null
     */
    protected function fs视频识别(DoMessage $vo消息){
        if($vo消息->get_message_type()!=Constants::x消息类型_视频) return null;
        $vo输出消息=clone $vo消息;
        $vo输出消息->set_message_type(Constants::x消息类型_文本);
        //此步骤在组装消息对象时已完成,语音识别由微信自动完成
        //$v当前消息->set_content( (string)$wxData->Recognition); //语音识别结果
        return $vo输出消息;
    }

    public function fh回复消息(DoMessage $vo消息){
        return $this->vc公众号->fh回复消息($vo消息);
    }

    public function fh生成文本消息($vs消息文本){
        return $this->vc公众号->fh生成文本消息($vs消息文本);
    }

    public function fh回复空消息(){
        return $this->vc公众号->ResponseBlank();
    }

    public function fh回复图文消息(Cbo图文消息列表 $voMsg){
        return $this->vc公众号->fh生成图文消息($voMsg);
    }

    public function fh回复页面链接($vs页面,$vs描述){
        return $this->vc公众号->fh回复页面链接($vs页面,$vs描述);
    }

    public function ff发送文本消息($vs消息文本,$vs用户openId=null){
        /*
        $retinfo = new C返回信息();
        //todo 需要获取正确的公众号ID
        $retinfo->set应用表id(1);
        $retinfo->set消息内容("$vs消息文本");
        $retinfo->set消息类型("文本消息");
        self::$返回堆栈->push_数据($retinfo);
        */
        return $this->vc公众号->ff发送文本消息($vs消息文本,$vs用户openId);
    }

    public function ff发送文本消息_多公众号($vs消息文本,$vs用户openId,$vs公众号Id){

        $retinfo = new C返回信息();
        //todo 需要获取正确的公众号ID
        $retinfo->set公众号Id($vs公众号Id);
        $retinfo->set用户OpenId($vs用户openId);
        $retinfo->set消息类型("文本消息");
        $retinfo->set消息内容("$vs消息文本");
        self::$返回堆栈->push_数据($retinfo);
         logger()->logDebug2("ff发送文本消息_多公众号");
         logger()->logDebug2($retinfo);
        return true;
    }

    public function ff发送会话消息(DoMessage $vo消息,$vs用户openId=null){
        return $this->vc公众号->ff发送消息($vo消息,$vs用户openId);
    }

    public function ff发送会话消息_多公众号(DoMessage $voMsg,$vs用户openId=null,$vs公众号Id){
        $retinfo = new C返回信息();
        //todo 此处需要获取正确的公众号ID
        $retinfo->set公众号Id($vs公众号Id);
        $retinfo->set用户OpenId($vs用户openId);
        $retinfo->set消息内容($voMsg);
        $retinfo->set消息类型("任意消息");
        self::$返回堆栈->push_数据($retinfo);
        return true;
//        return $this->vc公众号->ff发送消息($vo消息,$vs用户openId);
    }

    public function ff发送店铺文本消息_多公众号_多类型($vs消息文本,$vs用户openId,$vs公众号Id){

        $retinfo = new C返回信息多类型();
        //todo 需要获取正确的公众号ID
        $retinfo->set公众号Id($vs公众号Id);
        $retinfo->set用户OpenId($vs用户openId);
        $retinfo->set消息类型($vs消息文本['MsgType']);
        $retinfo->set消息内容($vs消息文本['消息内容']);
        if($vs消息文本['Format']) $retinfo->setFormat($vs消息文本['Format']);
        if($vs消息文本['media_id']) $retinfo->setmedia_id($vs消息文本['media_id']);
        if($vs消息文本['PicUrl']) $retinfo->setPicUrl($vs消息文本['PicUrl']);
        if($vs消息文本['ThumbMediaId']) $retinfo->setThumbMediaId($vs消息文本['ThumbMediaId']);
        // logger()->logDebug2("发送信息".$retinfo);
        self::$返回堆栈->push_数据($retinfo);

        return true;
    }

    public function ff发送图文消息(Cbo图文消息列表 $voMsg,$vs对方OpenId=null){
        /*        $retinfo = new C返回信息();
                //todo 此处需要获取正确的公众号ID
                $retinfo->set应用表id(1);
                $retinfo->set消息内容($voMsg);
                $retinfo->set消息类型("图文消息");
                self::$返回堆栈->push_数据($retinfo);
        */

        return $this->vc公众号->ff发送图文消息($voMsg,$vs对方OpenId);
    }

    public function ff发送模板消息($templateName,$toOid,array $data,$公众号id,$url跳转){
        $url='https://api.weixin.qq.com/cgi-bin/message/template/send?access_token='.Tools::fh通过公众号id获取公众号Token信息($公众号id);

        $cont=json_encode(array(
            'touser'=>$toOid,
            'template_id'=>$templateName,
            'url'=>$url跳转,
            'data'=>$data
        ),JSON_UNESCAPED_UNICODE);

        $ret=$this->fd调用微信接口($url,$cont,$公众号id);
        Logger::getInstance()->logDebug2("fd调用微信接口");
        Logger::getInstance()->logDebug2($ret);

        $json=json_decode($ret);
        return $json;
    }

    public function fd调用微信接口($url, $data=array(),$公众号id){

        $tools = new Tools();
        $r = $tools->curl_post_page_新($url,$data);
        if(strstr($r,'access_token is invalid')){//access_token超期，重新获取

            $curTime = time();
            $公众号 = pdo()->selectColumns('public_serv_accounts',array('app_id','AppSecret'),array('id'=>$公众号id));
            $公众号appid = $公众号['app_id'];
            $公众号appsecret = $公众号['AppSecret'];

            $token = Tools::getAccessTokenNew($公众号appid,$公众号appsecret);;
            $url = $this->ft替换url中token($url,$token);
            //再次调用
            $r = Tools::curl_post_page($url,$data);
        }

        //如果result中包含errcode != 0，
        $ar = json_decode($r,true);

        return $r;
    }

    private function ft替换url中token($url, $token){
        return preg_replace('/([\?&]access_token=)([^&]+)(&.*)?/','$1'.$token.'$3',$url);
        //return  'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=' . $token;
    }


    public function ff发送图文消息_多公众号(Cbo图文消息列表 $voMsg,$vs用户openId,$vs公众号Id){
        $retinfo = new C返回信息();
        //todo 此处需要获取正确的公众号ID
        $retinfo->set公众号Id($vs公众号Id);
        $retinfo->set用户OpenId($vs用户openId);
        $retinfo->set消息内容($voMsg);
        $retinfo->set消息类型("图文消息");
        self::$返回堆栈->push_数据($retinfo);
        return true;
    }


    public  function set页面链接消息($pageName,$title='微直达',$description='',$specialUrl=false){
        return Tools::new页面链接消息($pageName,$title,$description,$this->vs公众号AppId,$this->vs公众号Id,$specialUrl);
    }


    protected  function GetColonPos($content)
    {
        $i = mb_strrpos($content, ':', 'utf-8');
        if ($i) return $i;
        $j = mb_strrpos($content, '：', 'utf-8');
        if ($j) return $j;
        return false;
    }

    public function 生成有效链接($文件名,$state,$拼接=array()) {
        $enc=substr($state,3);
        $解析后数组=Tools::object2array(json_decode(urldecode($enc)));
        if(is_array($文件名)) {
            $文件名['publicnumber'] = $解析后数组['publicnumber'];
            $解析后数组=null;
            $解析后数组 = $文件名;
        }else {
            $解析后数组[0] = $文件名;
        }
        if($拼接) $解析后数组 = array_merge($解析后数组,$拼接);
        $va参数 = "000" . urlencode(json_encode($解析后数组));
        return 'index.php?state='.$va参数;
    }


}